# *-* coding:utf8 *-*
# __init__文件用于创建app


import config
from config import Config
from flask import Flask
import redis
# 利用 flask-session扩展，将 session 数据保存到 Redis 中
from flask_session import Session
# flask数据库工具
from flask_sqlalchemy import SQLAlchemy
# CSRFProtect只做验证工作，cookie中的 csrf_token 和表单中的 csrf_token 需要我们自己实现
from flask_wtf.csrf import CSRFProtect

from config import config_dict

db = SQLAlchemy()
redis_store = None


def create_app(config_name):
    app = Flask(__name__)

    # 加载配置
    app.config.from_object(config_dict[config_name])

    # 初始化数据库
    # db = SQLAlchemy(app)
    db.init_app(app)
    # 初始化redis 存储对象
    global redis_store
    redis_store = redis.StrictRedis(host=Config.REDIS_HOST, port=Config.REDIS_PORT)

    # 开启当前项目 CSRF 保护 应用于before钩子函数 只作服务器验证功能
    CSRFProtect(app)
    # 设置将session存储到redis
    Session(app)

    return app
